#include <iostream>
#include "Socket.hpp" // 假设您的 Socket 类定义在 Socket.hpp 文件中
#include "../Log.hpp" // 假设您的日志记录宏定义在 Log.hpp 文件中
#include "Buffer.hpp"
#include <cstring>
// int main()
// {
//     Socket server;
//     if (!server.CreateServer(8082))
//     {
//         std::cerr << "Failed to create server." << std::endl;
//         return 1;
//     }

//     std::cout << "Server is listening on port 8082..." << std::endl;

//     while (true)
//     {
//         int clientfd = server.Accept();
//         if (clientfd == -1)
//         {
//             continue; // 接收失败，继续等待下一个连接
//         }
//         Socket sock(clientfd);

//         // 在这里，我们可以创建一个新的 Socket 对象来处理客户端连接，
//         // 但为了简化，我们将直接使用原始的文件描述符。
//         // 注意：在实际应用中，应该为每个客户端连接创建一个新的线程或任务来处理。
//         while (1)
//         {
//             char buffer[1024];
//             ssize_t recv_len = sock.RecvNonBlock(buffer, sizeof(buffer));
//             if (recv_len > 0)
//             {
//                 std::cout << "Received from client: " << std::string(buffer, recv_len) << std::endl;

//                 // 发送回应给客户端
//                 const char *response = "Hello, client!";
//                 sock.SendNonBlock(response, strlen(response));
//             }
//             else if (recv_len == 0)
//             {
//                 // 非阻塞模式下没有数据可读，可以执行其他操作或继续等待
//             }
//             else
//             {
//                 // 接收失败，关闭客户端连接
//                 close(clientfd);
//             }
//             sleep(1);
//         }

//         // 注意：这个示例中，我们仅处理了一个客户端连接后就关闭了它。
//         // 在实际应用中，您应该在一个循环中处理多个客户端连接，
//         // 或者为每个连接创建一个新的线程/任务。
//         close(clientfd); // 关闭当前客户端连接（仅用于此示例）
//     }

//     return 0;
// }

